package testCase;

import static org.junit.Assert.assertEquals;
import moteur.Impl_Moteur;

import org.junit.Test;

import Outil.Buffer;
import Outil.PressePapier;
import Outil.Selection;

public class Impl_MoteurTest {

	@Test
	public void testCouper() {

		Buffer buffer = new Buffer();
		StringBuffer Ztravail = new StringBuffer("Test case");
		buffer.setZtravail(Ztravail);

		PressePapier pp = new PressePapier();
		pp.setContenu("");

		Selection s = new Selection();
		s.setDebut(2);
		s.setFin(5);

		Impl_Moteur moteur = new Impl_Moteur();
		moteur.setBuffer(buffer);
		moteur.setSelection(s);
		moteur.setPp(pp);

		moteur.couper();

		assertEquals(s.getDebut(), 2);
		assertEquals(s.getFin(), 2);
		assertEquals(moteur.getPp().getContenu(), "st ");
		assertEquals(moteur.getBuffer().getZoneDeTravail().toString(), "Tecase");
	}

	@Test
	public void testCopier() {
		Buffer buffer = new Buffer();
		StringBuffer Ztravail = new StringBuffer("Test case");
		buffer.setZtravail(Ztravail);

		PressePapier pp = new PressePapier();
		pp.setContenu("");

		Selection s = new Selection();
		s.setDebut(2);
		s.setFin(5);

		Impl_Moteur moteur = new Impl_Moteur();
		moteur.setBuffer(buffer);
		moteur.setSelection(s);
		moteur.setPp(pp);

		moteur.copier();

		assertEquals(s.getDebut(), 2);
		assertEquals(s.getFin(), 5);
		assertEquals(moteur.getPp().getContenu(), "st ");
		assertEquals(moteur.getBuffer().getZoneDeTravail().toString(),
				"Test case");

	}

	@Test
	public void testColler() {
		Buffer buffer = new Buffer();
		StringBuffer Ztravail = new StringBuffer("Well done");
		buffer.setZtravail(Ztravail);

		PressePapier pp = new PressePapier();
		pp.setContenu("Test Case");

		Selection s = new Selection();
		s.setDebut(0);
		s.setFin(4);

		Impl_Moteur moteur = new Impl_Moteur();
		moteur.setBuffer(buffer);
		moteur.setSelection(s);
		moteur.setPp(pp);

		moteur.coller();

		assertEquals(s.getDebut(), 0);
		assertEquals(s.getFin(), 4);
		assertEquals(moteur.getPp().getContenu(), "Test Case");
		assertEquals(moteur.getBuffer().getZoneDeTravail().toString(),
				"Test case done");
	}

	@Test
	public void testInsererText() {
		Buffer buffer = new Buffer();
		StringBuffer Ztravail = new StringBuffer("");
		buffer.setZtravail(Ztravail);

		Selection s = new Selection();
		s.setDebut(0);

		Impl_Moteur moteur = new Impl_Moteur();
		moteur.setBuffer(buffer);
		moteur.setSelection(s);
		char text = 't';

		moteur.insererText(text);

		assertEquals(s.getDebut(), 0);
		assertEquals(moteur.getBuffer().getZoneDeTravail().toString(), "t");

	}

	@Test
	public void testSupprimer() {
		Buffer buffer = new Buffer();
		StringBuffer Ztravail = new StringBuffer("Test Case");
		buffer.setZtravail(Ztravail);

		Selection s = new Selection();
		s.setDebut(0);
		s.setFin(4);

		Impl_Moteur moteur = new Impl_Moteur();
		moteur.setBuffer(buffer);
		moteur.setSelection(s);

		moteur.supprimer();
		assertEquals(moteur.getBuffer().getZoneDeTravail().toString(), " Case");

	}

}
